The field of this disclosure relates generally to systems and methods of data reading, and more particularly, but not exclusively, to reading color optical codes with a monochrome image sensor.
Optical codes are positioned on, or associated with, an object and encode useful, optically-readable information corresponding to an item or a class of items. For example, the optical codes may be associated with packaging of retail, wholesale, and inventory goods; retail product presentation fixtures (e.g., shelves); goods and inventory undergoing manufacturing; personal or company assets; and documents, including website URLs. An optical code data reader (or simply data reader) configured to read and decode the optical code can be used to retrieve the information corresponding to an item or class of items.
Perhaps the most common example of an optical code is a linear or one-dimensional (1D) barcode, such as a UPC code. Linear barcodes are just one example of the many types of optical codes in use today. Higher-dimensional (e.g., 2D) codes, which are also sometimes referred to as barcodes, include stacked barcodes (e.g., PDF-417 code), and matrix codes (e.g., Datamatrix code, QR code, or Maxicode).
Conventional barcodes have generally used two contrasting colors to encode information. A UPC code, for example, consists of alternating bars (i.e., relatively dark areas) and spaces (i.e., relatively light areas). The pattern of alternating bars and spaces and the widths of those bars and spaces represent a string of binary digits, where the width of any particular bar or space is an integer multiple of a specified minimum width that is called a module or unit. Similarly, in QR codes, for example, the optical code consists of black square modules arranged in a grid pattern on a white background.
Another type of 2D code may include color modules, as in High Capacity Color Barcodes (HCCBs). Unlike two-color optical codes, an HCCB uses a grid of equally shaped colored triangles to encode data. Depending on the informational storage needed, the grid size (i.e., the total number of symbols), symbol density (i.e., the printed size of the triangles), and symbol count (i.e., number of colors used) may vary. An HCCB can use an eight-, four-, or two-tone palette (e.g., black-and-white).
Different methods and systems of data readers are available for reading an optical code and for decoding the information represented by the optical code. For example, one- and two-dimensional optical codes have been read with image-based optical code readers. Image-based optical code readers include image sensors. The image sensors typically include charge coupled devices (CCDs) or complementary metal oxide semiconductor (CMOS) image sensors that generate data representing a captured image of an optical code. Because optical codes most often include contrasting dark and light patterns (e.g., black and white) to represent binary data, image-based data readers usually include image sensors of the monochrome type. However, a color sensitive image sensor is typically needed to read and distinguish different colors and thereby decode a color optical code.